/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package banco_imobiliario.model;

import banco_imobiliario.control.ControladorBancoImobiliario;

/**
 *
 * @author alessandro
 */
public class Imovel extends CasaDePropriedade {

    private Integer id;
    private Integer aluguel;
    private Integer aluguelUmaCasa;
    private Integer aluguelDuasCasas;
    private Integer aluguelTresCasas;
    private Integer aluguelQuatroCasas;
    private Integer aluguelHotel;
    private Integer precoConstrucaoHotel;
    private Integer precoConstrucaoResidencia;
    private int qtdResidencias = 0;
    private String imgHotel;
    private String imgCasa;

    public Imovel() {
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getImgCasa() {
        return imgCasa;
    }

    public void setImgCasa(String imgCasa) {
        this.imgCasa = imgCasa;
    }

    public String getImgHotel() {
        return imgHotel;
    }

    public void setImgHotel(String imgHotel) {
        this.imgHotel = imgHotel;
    }

    public Integer getAluguel() {
        return aluguel;
    }

    public void setAluguel(Integer aluguel) {
        this.aluguel = aluguel;
    }

    public Integer getAluguelDuasCasas() {
        return aluguelDuasCasas;
    }

    public void setAluguelDuasCasas(Integer aluguelDuasCasas) {
        this.aluguelDuasCasas = aluguelDuasCasas;
    }

    public Integer getAluguelHotel() {
        return aluguelHotel;
    }

    public void setAluguelHotel(Integer aluguelHotel) {
        this.aluguelHotel = aluguelHotel;
    }

    public Integer getAluguelQuatroCasas() {
        return aluguelQuatroCasas;
    }

    public void setAluguelQuatroCasas(Integer aluguelQuatroCasas) {
        this.aluguelQuatroCasas = aluguelQuatroCasas;
    }

    public Integer getAluguelTresCasas() {
        return aluguelTresCasas;
    }

    public void setAluguelTresCasas(Integer aluguelTresCasas) {
        this.aluguelTresCasas = aluguelTresCasas;
    }

    public Integer getAluguelUmaCasa() {
        return aluguelUmaCasa;
    }

    public void setAluguelUmaCasa(Integer aluguelUmaCasa) {
        this.aluguelUmaCasa = aluguelUmaCasa;
    }

    public Integer getPrecoConstrucaoHotel() {
        return precoConstrucaoHotel;
    }

    public void setPrecoConstrucaoHotel(Integer precoConstrucaoHotel) {
        this.precoConstrucaoHotel = precoConstrucaoHotel;
    }

    public Integer getPrecoConstrucaoResidencia() {
        return precoConstrucaoResidencia;
    }

    public void setPrecoConstrucaoResidencia(Integer precoConstrucaoResidencia) {
        this.precoConstrucaoResidencia = precoConstrucaoResidencia;
    }

    public void construirResidencia(Jogador jogador, int quantidade) {
        if (qtdResidencias + quantidade < 5) {
            if (jogador.debitar(quantidade * precoConstrucaoResidencia)) {
                qtdResidencias += quantidade;
            }
        } else if (qtdResidencias == 4) {
            if (jogador.debitar(precoConstrucaoHotel)) {
                qtdResidencias++;
            }
        }
    }

    public void pagarAluguel(Jogador jogadorProprietario, Jogador jogadorRodada) {
        if (jogadorRodada.verificaDinheiro(aluguel)) {
            jogadorRodada.debitar(aluguel);
            jogadorProprietario.creditar(aluguel);
        }
    }

    public void pagarAluguelUmaCasa(Jogador jogadorProprietario, Jogador jogadorRodada) {
        if (jogadorRodada.verificaDinheiro(aluguelUmaCasa)) {
            jogadorRodada.debitar(aluguelUmaCasa);
            jogadorProprietario.creditar(aluguelUmaCasa);
        }
    }

    public void pagarAluguelDuasCasas(Jogador jogadorProprietario, Jogador jogadorRodada) {
        if (jogadorRodada.verificaDinheiro(aluguelDuasCasas)) {
            jogadorRodada.debitar(aluguelDuasCasas);
            jogadorProprietario.creditar(aluguelDuasCasas);
        }
    }

    public void pagarAluguelTresCasas(Jogador jogadorProprietario, Jogador jogadorRodada) {
        if (jogadorRodada.verificaDinheiro(aluguelTresCasas)) {
            jogadorRodada.debitar(aluguelTresCasas);
            jogadorProprietario.creditar(aluguelTresCasas);
        }
    }

    public void pagarAluguelQuatroCasas(Jogador jogadorProprietario, Jogador jogadorRodada) {
        if (jogadorRodada.verificaDinheiro(aluguelQuatroCasas)) {
            jogadorRodada.debitar(aluguelQuatroCasas);
            jogadorProprietario.creditar(aluguelQuatroCasas);
        }
    }

    public void pagarAluguelHotel(Jogador jogadorProprietario, Jogador jogadorRodada) {
        if (jogadorRodada.verificaDinheiro(aluguelHotel)) {
            jogadorRodada.debitar(aluguelHotel);
            jogadorProprietario.creditar(aluguelHotel);
        }
    }
    
    

    @Override
    public void atingida(Jogador jogadorDaRodada) {
        System.out.println(getProprietario());
        if (getProprietario() == null) {
            ControladorBancoImobiliario control = ControladorBancoImobiliario.getInstancia();
            control.comprarLogradouro(this);
        }else{
            //Se possuir proprietario
            if (qtdResidencias == 0) {
                pagarAluguel(getProprietario(), jogadorDaRodada);
            } else if (qtdResidencias == 1) {
                pagarAluguelUmaCasa(jogadorDaRodada, jogadorDaRodada);
            } else if (qtdResidencias == 2) {
                pagarAluguelDuasCasas(jogadorDaRodada, jogadorDaRodada);
            } else if (qtdResidencias == 3) {
                pagarAluguelTresCasas(jogadorDaRodada, jogadorDaRodada);
            } else if (qtdResidencias == 4) {
                pagarAluguelQuatroCasas(jogadorDaRodada, jogadorDaRodada);
            } else if (qtdResidencias == 5) {
                pagarAluguelHotel(jogadorDaRodada, jogadorDaRodada);
            }
        }

    }
}
